The generation of color documents can be thought of as a two step process: first, the generation of the image by means of scanning an original document with a color image input terminal or scanner or, alternatively, creating a color image on a work station operated in accordance with a color image creation program; and secondly, printing of that image with a color printer in accordance with the colors defined by the scanner or computer generated image. Scanner output is commonly transformed to a color space of tristimulus values, i.e., RGB (red-green-blue). Commonly, these values are a linear transformation of the standard XYZ coordinates of CIE color space, or a corrected transform of those values. In the case of computer generated images, colors defined by the user at the user interface of a workstation can be defined initially in color space of tristimulus values. These colors are defined independently of any particular device, and accordingly reference is made to the information as being "device independent".
Printers have an output which can be defined as existing in a color space called CMYK (cyan-magenta-yellow-key or black) which is uniquely defined for the printer by its capabilities and colorants. Printers operate by the addition of multiple layers of ink or colorant in layers to a page. The response of the printer tends to be relatively non-linear. These colors are defined for a particular device, and accordingly reference is made to the information as being "device dependent". Thus, while a printer receives information in a device independent color space, it must convert that information to print in a device dependent color space, which reflects the gamut or possible range of colors of the printer.
The desirability of operating in a device independent color space with subsequent conversion to a device dependent color space is well known, as shown by U.S. Pat. No. 4,500,919 to Schreiber and U.S. Pat. No. 2,790,844 to Neugebauer, and U.S. Pat. No. 4,275,413 to Sakamoto. There are many methods of conversion between color spaces, all of which begin with the measurement of printer response to certain input values. Commonly, a printer is driven with a set of input values reflecting color samples throughout the printer gamut, the color samples are printed in normal operation of the printer. As previously noted, most printers have non-linear response characteristics.
In U.S. Pat. No. 4,275,413 to Sakamoto, the information derived is placed into lookup tables, stored in a memory, perhaps ROM memory or RAM memory where the lookup table relates input color space to output color space. The lookup table is commonly a three dimensional table since color is defined with three variables. In RGB space, at a scanner or computer, space can be defined as three dimensional with black at the origin of a three dimensional coordinate system 0, 0, 0, and white at the maximum of a three dimensional coordinate system which an 8-bit system, would be located at 255, 255, 255. Each of the three axes radiating from the origin point therefore respectively define red, green, and blue. A similar construct can be made for the printer, with axes representing cyan, magenta, and yellow. In the 8-bit system suggested, there will be, however, over 16 million possible colors (256.sup.3). There are clearly too many values for a 1:1 mapping of RGB to CMY. Accordingly, as proposed in U.S. Pat. No. 4,275,413 to Sakamoto, only a relatively small number of samples are used to do the mapping from RGB to CMY, perhaps on the order of 1,000. Therefore, the lookup tables consist of a set of values which could be said to be the intersections for corners of a set of cubes mounted on top of one another. Colors falling within each cubic volume can be interpolated from the measured values, through many methods including tri-linear interpolation, tetrahedral interpolation, polynomial interpolation, linear interpolation, and any other interpolation method depending on the desired speed and accuracy of the result.
It would be very easy to index device dependent color values or specifications to device independent color specifications, but that is not the requirement. Instead, device independent specifications must be mapped to device dependent specifications. Several problems arise. Of course, the primary problem is that the printer response is not a linear response. A second problem is that the color space, and therefore the coordinates defined in the color space must be maintained as a uniform grid, for maximum efficiency of some interpolation methods, particularly for tetrahedral interpolation, a very desirable method of interpolation.
Accordingly a three dimensional lookup table (LUT) may be constructed which puts device independent input values into a predictable grid pattern. One method of accomplishing this requirement is by an interpolation process which derives a value at a desired location as a function of all (or a significant set) of measured color values weighted in accordance with the formula: ##EQU1##
Where C is the color value at a given point in color space,
i, j, k is each measured point in color space PA1 d.sub.i,j,k is the distance from a given point to each i, j, k PA1 P.sub.i,j,k is a color value at i, j, k.
This method of interpolation is known as Shepard's Method (See, for example "Shepard's Method of `Metric Interpolation` to Bivariate and Multivariate Interpolation" by W. Gordon and J. Wixom, Mathematics of Computation, Vol. 32, No. 141, January 1978, pp. 253-264 and papers by Laihanen which teach the use of 1/d*'4 for color correction. Shepard's Method suggests that the difference between an asked-for color which was directed to a printer and the printed color can be thought of as a vector which maps a device independent color to a device dependent color. Then, for any other device independent point in color space which is desired, that point can be thought of as a vector quantity, derived by averaging over the space all the known vectors, each vector weighted by a function which decreases its effect on the desired color vector as that vector is further and further away from the color correction vector being calculated. In one useful formula, each vector is weighted by a function of (1/d.sup.4). Other weighting functions are also possible, and the weighting function can vary throughout the color space.
However, a problem referred to as "scalloping" occurs at the interpolated values. With reference to FIG. 1, a simplified example is given, where, given vectors A, B, C, D, E, known by measurement, a new interpolated vector F located between A and B is obtained by averaging all the vectors, weighted by the Shepard's Method. The result is that, the interpolated vector differs from what would likely be a more probable value based on vectors A and B, due to the contributions of vectors C, D, E, even though they are some distance away. This problem is also pointed out by P. Lancaster et al., "Surfaces Generated by Moving Least Squares Methods", Mathematics of Computation, Vol. 32, No. 155, July 1981, pp. 141-158 page 148-149, where the problem is referred to as "dimpling".
The references cited herein are incorporated by reference for their teachings.